/**
 * @author		Ben Layet
 * @version 	0.1
 * @date		3 Sep 2008
 * @copyright 	� Canon Europa N. V. 2004
 */
package org.learnaholic.application.model;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * Model of the Learnaholic application.
 */
public interface MemoryItems
{
	/**
	 * Gets a sub map from a set of keys.
	 * @param keys the set of keys.
	 * @return a sub map of the current map.
	 */
	public MemoryItems getSubMap(Set<String> keys);

	public void putAll(MemoryItems items);
	public void put(String key, MemoryItem item);
	public MemoryItem get(String key);
	public MemoryItem remove(String key);
	public void clear();

	/**
	 * @param l listener
	 */
	public void addMemoryListener(MemoryListener l);
	/**
	 * @param l listener
	 */
	public void removeMemoryListener(MemoryListener l);

	/**
	 * @return
	 */
	public Iterator<MemoryItem> iterator();
	
	
	public List<String> getAllPropertyValues(String propertyName);
}
